export default function () {
	var dom;
	//自定义DOM覆盖物 - 继承DOMOverlay
	function domOObj(options) {
		TMap.DOMOverlay.call(this, options);
	}
	domOObj.prototype = new TMap.DOMOverlay();

	// 初始化
	domOObj.prototype.onInit = function (options) {
		this.position = options.position;
		this.content = options.content;
		this.data = options.data;
	};

	// 销毁时需解绑事件监听
	domOObj.prototype.onDestroy = function() {
		if (this.onClick) {
			this.dom.removeEventListener(this.onClick);
		}
	};

	// 创建DOM元素，返回一个DOMElement
	domOObj.prototype.createDOM = function () {
		dom = document.createElement("div");
		//设置DOM样式
		dom.style.cssText = 'position:absolute;top:0;left:0;'
		dom.innerHTML = this.content
		dom.data = this.data

		this.data = []
		this.onClick = (e) => {
			// console.log(e.target)
			if (e.target.className == 'dom-overlay-close') this.setMap(null) 
			else if (e.target.className == 'dom-overlay-click') this.emit('click'); // DOMOverlay继承自EventEmitter，可以使用emit触发事件
		};
		// pc端注册click事件，移动端注册touchend事件
		dom.addEventListener('click', this.onClick);
		return dom;
	};

	// 更新DOM元素，在地图移动/缩放后执行
	domOObj.prototype.updateDOM = function () {
		if (!this.map) {
			return;
		}

		// 经纬度坐标转容器像素坐标
		let pixel = this.map.projectToContainer(this.position);

		//默认使用DOM左上角作为坐标焦点进行绘制（左上对齐）
		//如想以DOM中心点（横向&垂直居中）或其它位置为焦点，可结合this.dom.clientWidth和this.dom.clientHeight自行计算
		let left = pixel.getX() - this.dom.clientWidth / 2 + 'px';
		let top = pixel.getY() - this.dom.clientHeight / 2 + 'px';
		this.dom.style.transform = `translate(${left}, ${top})`;

		//将平面坐标转为三维空间坐标
		this.dom.style.transform = `translate3d(${left}, ${top}, 0px)`;
	};

	//自定义一个更新内容的方法 
	domOObj.prototype.updateContent = function (content) {
		dom.innerHTML = content
	}

	return domOObj
}